<script setup lang="ts">
import { useChannelStore } from '@/stores/channel'
import type { ChannelItem, ChannelResData } from '@/types/data'
import axios from 'axios'
import { onMounted, ref } from 'vue'

// 使用TS的时候，axios()调用需要改为 axios.request()，可以使用泛型
// 1. 使用泛型的目的的告诉axios返回数据的类型如何
// 2. 泛型的类型需要和接口返回的一致，否则无意义
const store = useChannelStore()
// 创建响应式数据
const channels = ref<ChannelItem[]>([])
onMounted(async () => {
  const res = await axios.get<ChannelResData>('http://geek.itheima.net/v1_0/channels')
  // 给响应式数据赋值
  channels.value = res.data.data.channels
})
</script>

<template>
  <div class="channel-nav">
    <nav class="list">
      <a
        class="item"
        :class="{ active: item.id === store.channel }"
        href="javascript:;"
        v-for="item in channels"
        :key="item.id"
        @click="store.changeChannel(item.id)"
      >
        {{ item.name }}
      </a>
    </nav>
  </div>
</template>
